<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ES6定义变量</title>
</head>

<body>
  <script>
    // 1.预解析（var和let const的区别）
    // var变量提升
    console.log(num)
    var num = 100
    console.log(num)

    //定义之前使用let声明的变量会报错
    // console.log(num2)
    // let num2=200
    // console.log(num2)

    //定义之前使用const声明的变量会报错
    // console.log(num3)
    // const num3=300
    // console.log(num3)


    //2.重复变量名（var和let const的区别）
    // var n1=100
    // var n1=200
    // console.log(n1)

    //let和const使用重复变量名会报错
    // let n2=100
    // let n2=200
    // console.log(n2)

    // const n3=100
    // const n3=200


    //3.块级作用域（var和let const的区别）
    //任何一个可以执行代码段的｛｝都会限制该变量的使用范围
    // if (true){
    //     var num=100
    //     console.log(num)
    // }
    // console.log(num)//里外都可以用

    // if (true){
    //     //因为这个num使用let关键字定义的
    //     //所以只能在这个if的｛｝内使用
    //     let num=100
    //     console.log(num)//正常输出
    // }
    // console.log(num)//报错

    // if (true){
    //     //因为这个num使用const关键字定义的
    //     //所以只能在这个if的｛｝内使用
    //     const num=100
    //     console.log(num)//正常输出
    // }
    // console.log(num)//报错


    //4.定义时不赋值（let和const的区别）
    // let num
    // console.log(num)
    // num = 100
    // console.log(num)

    //使用const的时候，声明必须赋值
    // const num
    // console.log(num)
    // num = 100
    // console.log(num)


    //5.修改（let和const的区别）
    //  let num=100
    // console.log(num)
    // num = 200
    // console.log(num)

  //   const num = 100
  //   console.log(num)//100
  //   //你试图修改num的值，但是因为是const定义的，const声明常量不能修改
  //   num = 200
  //   console.log(num)//报错
  // </script>
</body>

</html>